imwayland: clear preedit on focus out
authorDorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
Thu, 23 Aug 2018 10:32:11 +0000 (12:32 +0200)
committerDorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
Thu, 23 Aug 2018 20:03:01 +0000 (22:03 +0200)
modules/input/imwayland.c

index 3589c4c1302cc4360b5f9568f8b0805cd1003e1c..11d09d20077a47654a7e048ab5078c8ffe20b8f9 100644 (file)
@@ -135,18 +135,7 @@ static void
 text_input_leave (void                     *data,
                   struct zwp_text_input_v3 *text_input,
                   struct wl_surface        *surface)
-{
-  /*
-  GtkIMContextWayland *context;
-
-  if (!global->current)
-    return;
-
-  context = GTK_IM_CONTEXT_WAYLAND (global->current);
-  TODO: does this clear text input or modify text?
-  reset_preedit (context);
-  */
-}
+{}
 
 static void
 text_input_preedit (void                     *data,
@@ -169,7 +158,6 @@ text_input_preedit (void                     *data,
   context->pending_preedit.cursor_end = cursor_end;
 }
 
-
 static void
 text_input_preedit_apply (GtkIMContextWaylandGlobal *global)
 {
@@ -664,6 +652,11 @@ gtk_im_context_wayland_focus_out (GtkIMContext *context)
 
   zwp_text_input_v3_disable (global->text_input);
   commit_state (context_wayland);
+
+  /* after disable, incoming state changes won't take effect anyway */
+  text_input_preedit (global, global->text_input, "", 0, 0);
+  text_input_preedit_apply (global);
+
   global->current = NULL;
 }